compliance consulting litigation .net audit lawyer aspect-oriented programming law design design patterns intentional programming attorney generative programming lit support software java lit support legal holds software management aop